Compile | 您所在的位置:网站首页 › flink hyperloglog › Compile |
Compile With ARMKylinOSSoftware and Hardware EnvironmentCompile With ldb-toolchainCentOS & UbuntuHardware EnvironmentSoftware EnvironmentSoftware Environment ListSoftware Environment Installation CommandCentOS 8.4Ubuntu 20.04Download Source CodeInstall and DeployCheck if the AVX2 instruction set is supportedExecute compilationFAQCompile With ARM This topic is about how to compile Doris on the ARM64 platform. Note that this is for reference only. Other errors may occur when compiling in different environments. KylinOSSoftware and Hardware EnvironmentKylinOS Version: $> cat /etc/.kyinfoname=Kylin-Servermilestone=10-SP1-Release-Build04-20200711arch=arm64beta=Falsetime=2020-07-11 17:16:54dist_id=Kylin-Server-10-SP1-Release-Build04-20200711-arm64-2020-07-11 17:16:54CPU Model: $> cat /proc/cpuinfomodel name : Phytium,FT-2000+/64 Compile With ldb-toolchainThis method works for Doris versions after commit 7f3564. Download ldb_toolchain_gen.aarch64.sh For detailed instructions, please refer to Compile with ldb-toolchain Note that you need to download the corresponding aarch64 versions of jdk and nodejs: Java8-aarch64Node v12.13.0-aarch64 CentOS & UbuntuHardware Environment System Version: CentOS 8.4, Ubuntu 20.04System Architecture: ARM X64CPU: 4CMemory: 16 GBHard Disk: 40GB (SSD), 100GB (SSD) Software EnvironmentSoftware Environment ListComponent NameComponent VersionGit2.0+JDK1.8.0Maven3.6.3NodeJS16.3.0LDB-Toolchain0.9.1Commonly Used Componentsbyaccpatchautomakelibtoolmakewhichfilencurses-develgettext-develunzipbzip2ziputil-linuxwgetgitpython2yum install or apt-get installautoconf2.69bison3.0.4 Software Environment Installation CommandCentOS 8.4Create root directories # Create root directory for software download and installation packagesmkdir /opt/tools# Create root directory for software installationmkdir /opt/softwareGit # yum install (save the trouble of compilation)yum install -y gitJDK8 (2 methods) # 1. yum install, which can avoid additional download and configuration. Installing the devel package is to get tools such as the jps command.yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel# 2. Download the installation package of the arm64 architecture, decompress it, and configure the environment variables.cd /opt/toolswget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/jdk-8u291-linux-aarch64.tar.gz && \tar -zxvf jdk-8u291-linux-aarch64.tar.gz && \mv jdk1.8.0_291 /opt/software/jdk8Maven cd /opt/tools# Download the wget tool, decompress it, and configure the environment variables.wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz && \tar -zxvf apache-maven-3.6.3-bin.tar.gz && \mv apache-maven-3.6.3 /opt/software/mavenNodeJS cd /opt/tools# Download the installation package of the arm64 architecturewget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/node-v16.3.0-linux-arm64.tar.xz && \tar -xvf node-v16.3.0-linux-arm64.tar.xz && \mv node-v16.3.0-linux-arm64 /opt/software/nodejsldb-toolchain cd /opt/tools# Download ldb-toolchain ARM versionwget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.9.1/ldb_toolchain_gen.aarch64.sh && \sh ldb_toolchain_gen.aarch64.sh /opt/software/ldb_toolchain/Configure environment variables # Configure environment variablesvim /etc/profile.d/doris.shexport JAVA_HOME=/opt/software/jdk8export MAVEN_HOME=/opt/software/mavenexport NODE_JS_HOME=/opt/software/nodejsexport LDB_HOME=/opt/software/ldb_toolchainexport PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$NODE_JS_HOME/bin:$LDB_HOME/bin:$PATH# Save, exit, and refresh environment variablessource /etc/profile.d/doris.sh# Testjava -version> java version "1.8.0_291"mvn -version> Apache Maven 3.6.3node --version> v16.3.0gcc --version> gcc-11Install other environments and components # Install required system packagessudo yum install -y byacc patch automake libtool make which file ncurses-devel gettext-devel unzip bzip2 bison zip util-linux wget git python2# Install autoconf-2.69cd /opt/toolswget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \ tar zxf autoconf-2.69.tar.gz && \ mv autoconf-2.69 /opt/software/autoconf && \ cd /opt/software/autoconf && \ ./configure && \ make && \ make install Ubuntu 20.04Update apt-get repository apt-get updateCheck the shell command set The Ubuntu shell installs dash instead of bash by default. It needs to be switched to bash for proper execution. Run the following command to view the details of sh and confirm which program corresponds to the shell: ls -al /bin/shThe shell can be switched back to bash by: sudo dpkg-reconfigure dashThen select no to confirm. After these steps, dash will no longer be the default shell tool. Create root directories # Create root directory for software download and installation packagesmkdir /opt/tools# Create root directory for software installationmkdir /opt/softwareGit # apt-get install, which can save the trouble of compilationapt-get -y install gitJDK8 # Download the installation package of the ARM64 architecture, decompress it, and configure environment variables.cd /opt/toolswget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/jdk-8u291-linux-aarch64.tar.gz && \tar -zxvf jdk-8u291-linux-aarch64.tar.gz && \mv jdk1.8.0_291 /opt/software/jdk8Maven cd /opt/tools# Download the wget tool, decompress it, and configure the environment variables.wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz && \tar -zxvf apache-maven-3.6.3-bin.tar.gz && \mv apache-maven-3.6.3 /opt/software/mavenNodeJS cd /opt/tools# Download the installation package of ARM64 architecture.wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/node-v16.3.0-linux-arm64.tar.xz && \tar -xvf node-v16.3.0-linux-arm64.tar.xz && \mv node-v16.3.0-linux-arm64 /opt/software/nodejsldb-toolchain cd /opt/tools# Download ldb-toolchain ARM versionwget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.9.1/ldb_toolchain_gen.aarch64.sh && \sh ldb_toolchain_gen.aarch64.sh /opt/software/ldb_toolchain/Configure environment variables # Configure environment variablesvim /etc/profile.d/doris.shexport JAVA_HOME=/opt/software/jdk8export MAVEN_HOME=/opt/software/mavenexport NODE_JS_HOME=/opt/software/nodejsexport LDB_HOME=/opt/software/ldb_toolchainexport PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$NODE_JS_HOME/bin:$LDB_HOME/bin:$PATH# Save, exit, and refresh environment variablessource /etc/profile.d/doris.sh# Testjava -version> java version "1.8.0_291"mvn -version> Apache Maven 3.6.3node --version> v16.3.0gcc --version > gcc-11Install other environments and components # Install required system packagessudo apt install -y build-essential cmake flex automake bison binutils-dev libiberty-dev zip libncurses5-dev curl ninja-buildsudo apt-get install -y makesudo apt-get install -y unzipsudo apt-get install -y python2sudo apt-get install -y byaccsudo apt-get install -y automakesudo apt-get install -y libtoolsudo apt-get install -y bzip2sudo add-apt-repository ppa:ubuntu-toolchain-r/ppasudo apt updatesudo apt install gcc-11 g++-11sudo apt-get -y install autoconf autopoint# Install autoconf-2.69cd /opt/toolswget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \ tar zxf autoconf-2.69.tar.gz && \ mv autoconf-2.69 /opt/software/autoconf && \ cd /opt/software/autoconf && \ ./configure && \ make && \ make install Download Source Codecd /optgit clone https://github.com/apache/doris.gitInstall and DeployCheck if the AVX2 instruction set is supportedIf there is data returned, that means AVX2 is supported; otherwise, AVX2 is not supported. cat /proc/cpuinfo | grep avx2Execute compilation# For machines that support the AVX2 instruction set, compile directlysh build.sh# For machines that do not support the AVX2 instruction set, use the following command to compileUSE_AVX2=OFF sh build.shFAQFile not found when compiling the third-party library libhdfs3.a. Problem Description During the compilation and installation process, the following error occurrs: not found lib/libhdfs3.a file or directory Cause The third-party library dependency is improperly downloaded. Solution Use a third-party download repository export REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdpartysh /opt/doris/thirdparty/build-thirdparty.shREPOSITORY_URL contains all third-party library source packages and their historical versions. python command not found Problem Description An exception is thrown when executing build.sh /opt/doris/env.sh: line 46: python: command not found Python 2.7.18 Cause The system uses python2.7, python3.6, python2, python3 by default to execute python commands. Doris only requires python 2.7+ to install dependencies, so you just need to add a command python to connect. Solution Establish a soft link to the python command in \usr\bin # View python installation directorywhereis python# Establish soft connectionsudo ln -s /usr/bin/python2.7 /usr/bin/pythonThere is no output directory after compilation Problem Description Cannot find the output folder in the directory after the execution of build.sh.Cause Compilation fails. Try again. Solution sh build.sh --cleanspark-dpp compilation fails Problem Description After compiling build.sh, compiling to Spark-DPP fails with an error Failed to execute goal on project spark-dpp Cause This error message is caused by download failure (connection to the repo.maven.apache.org central repository fails). Could not transfer artifact org.apache.spark:spark-sql_2.12:jar:2.4.6 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo .maven.apache.org/maven2/org/apache/spark/spark-sql_2.12/2.4.6/spark-sql_2.12-2.4.6.jar: Unknown host repo.maven.apache.org Solution RebuildNo space left, compilation fails Problem Description Failed to build CXX object during compilation, error message showing no space left fatal error: error writing to /tmp/ccKn4nPK.s: No space left on device 1112 | } // namespace doris::vectorized compilation terminated. Cause Insufficient free space on the device Solution Expand the free space on the device by deleting files you don’t need, etc. Failed to start FE, transaction error -20 Problem Description When starting FE, a transaction error 20 is reported with UNKNOWN status. [BDBEnvironment.setup():198] error to open replicated environment. will exit. com.sleepycat.je.rep.ReplicaWriteException: (JE 18.3.12) Problem closing transaction 20. The current state is:UNKNOWN. The node transitioned to this state at:Fri Apr 22 12:48:08 CST 2022 Cause Insufficient hard disk space Solution Free up hard disk space or mount a new hard disk Abnormal BDB environment setting, disk search error Problem Description An exception is reported when starting FE after migrating the drive letter where FE is located 2022-04-22 16:21:44,092 ERROR (MASTER 172.28.7.231_9010_1650606822109(-1)|1) [BDBJEJournal.open():306] catch an exception when setup bdb environment. will exit. com.sleepycat.je.DiskLimitException: (JE 18.3.12) Disk usage is not within je.maxDisk or je.freeDisk limits and write operations are prohibited: maxDiskLimit=0 freeDiskLimit=5,368,709,120 adjustedMaxDiskLimit=0 maxDiskOverage=0 freeDiskShortage=1,536,552,960 diskFreeSpace =3,832,156,160 availableLogSize=-1,536,552,960 totalLogSize=4,665 activeLogSize=4,665 reservedLogSize=0 protectedLogSize=0 protectedLogSizeMap={} Cause FE has been migrated to another location, which doesn’t match the hard disk information stored in the metadata; or the hard disk is damaged or not mounted Solution Check if the hard disk is normal, initialized and mounted correctlyFix FE metadataIf it is a test machine, you can delete the metadata directory and restartCould not find pkg.m4 file in pkg.config Problem Description A “file not found” error occurrs during compilation: Couldn’t find pkg.m4 from pkg-config. Install the appropriate package for your distribution or set ACLOCAL_PATH to the directory containing pkg.m4. Cause There is something wrong with the compilation of the third-party library libxml2 . Possible Reasons: An exception occurs when the Ubuntu system loads the environment variables so the index under the ldb directory is not successfully loaded.The retrieval of environment variables during libxml2 compilation fails, so the ldb/aclocal directory is not retrieved.Solution Copy the pkg.m4 file in the ldb/aclocal directory into the libxml2/m4 directory, and recompile the third-party library. cp /opt/software/ldb_toolchain/share/aclocal/pkg.m4 /opt/incubator-doris/thirdparty/src/libxml2-v2.9.10/m4sh /opt/incubator-doris/thirdparty/build-thirdparty.shFailed to execute test CURL_HAS_TLS_PROXY Problem Description An error is reported during the compilation process of the third-party package: -- Performing Test CURL_HAS_TLS_PROXY - Failed CMake Error at cmake/dependencies.cmake:15 (get_property): INTERFACE_LIBRARY targets may only have whitelisted properties. The property “LINK_LIBRARIES_ALL” is not allowed. The log shows: curl No such file or directory fatal error: curl/curl.h: No such file or directory 2 | #include compilation terminated. ninja: build stopped: subcommand failed. Cause There is an error in the compilation environment. The gcc is of version 9.3.0 that comes with the system, so it is not compiled with ldb, so you need to configure the ldb environment variable. Solution Configure ldb environment variables # Configure environment variablesvim /etc/profile.d/ldb.shexport LDB_HOME=/opt/software/ldb_toolchainexport PATH=$LDB_HOME/bin:$PATH# Save, exit, and refresh environment variablessource /etc/profile.d/ldb.sh# Testgcc --version> gcc-11Other problems Problem Description The follow error prompts are all due to one root cause. bison related fseterr.c error when installing bison-3.0.4 flex related flex command not found cmake related cmake command not foundcmake cannot find the dependent librarycmake cannot find CMAKE_ROOTCompiler set not found in cmake environment variable CXX boost related Boost.Build build engine failed mysql related Could not find mysql client dependency a file gcc related GCC version requires 11+Cause Not compiled with ldb-toolschain Solution Check if the ldb-toolschain environment variable is configuredCheck if gcc version is gcc-11Delete the ldb directory after the ldb-toolschain.sh script is executed, re-execute and configure the environment variables, and verify the gcc version |
CopyRight 2018-2019 实验室设备网 版权所有 |